
#ifndef LED_H_
#define LED_H_

#include "stm32lib/stm32f10x_rcc.h"
#include "stm32lib/stm32f10x_gpio.h"


template <int GPIOx, int GPIO_Pin>
class Led
{
  public:
    Led(void)
    {
      off();
    }

    void on(void)
    {
      GPIO_InitTypeDef GPIO_InitStructure;  
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_InitStructure.GPIO_Pin  = GPIO_Pin;
      GPIO_Init((GPIO_TypeDef *) GPIOx, &GPIO_InitStructure);
      GPIO_ResetBits((GPIO_TypeDef *) GPIOx, GPIO_Pin);
    }

    void off(void)
    {
      GPIO_InitTypeDef GPIO_InitStructure;  
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
      GPIO_InitStructure.GPIO_Pin  = GPIO_Pin;
      GPIO_Init((GPIO_TypeDef *) GPIOx, &GPIO_InitStructure);
      GPIO_SetBits((GPIO_TypeDef *) GPIOx, GPIO_Pin);
    }
};


#endif /* BUTTON_H_ */
